3D Reconstruction with Stereo Images - Part1: Camera Calibration
Naa_tsure.iconなんか網膜みたいだね
このチュートリアルでは4STEPの処理を経て、二次元画像から効果的に三次元空間を構築する方法を学ぶ
リアル世界を写真に収めると、必ず歪みが生じてしまう。
この歪みの代表的なものが2つ
Radial distortion
まっすぐな線が曲がった線になってしまう歪み
Naa_tsure.iconイメージ的には魚眼レンズ
原因:レンズの光学中心から離れるにつれて光の屈折率が大きくなるため
tangential distortion
ある領域が期待しているよりも近くにあるようになってしまう歪み
Naa_tsure.iconいろんなサイトにこう書いてあるが、いまいちイメージが掴めない
原因:レンズと画像平面(カメラセンサー?)が完璧に平行になっていないため
Radial distortion
2点が同じx座標にいるとき、光学中心からの距離に応じて補正を変えるべきなので、
$ r^2=x^2+y^2として、
$ x_{correction}=x(1+k_1r^2+k_2r^4+k_3r^6)
$ y_{correction}=y(1+k_1r^2+k_2r^4+k_3r^6)
という変換を施す。
パラメータ$ k_nを決定する必要がある(後述)
tangential distortion
変換は以下の通り。
$ x_{corrected} = x + 2 p_1xy + p_2(r^2+ 2x^2)
$ y_{corrected} = y + 2 p_2xy + p_1(r^2+ 2y^2)
xとyを光学中心からの距離を基準に非対称に補正するのは分かったけど細かいことはよくわからない
Naa_tsure.icon係数が2倍されるのは何故
パラメータ$ p_nを決定する必要がある(後述)
まとめると、補正の式は以下のようになる。
$ x_{correction}=x(1+k_1r^2+k_2r^4+k_3r^6)+ 2 p_1xy + p_2(r^2+ 2x^2)
$ y_{correction}=y(1+k_1r^2+k_2r^4+k_3r^6)+2p_2xy + p_1(r^2+ 2y^2)
ここまでで、カメラによる歪みとその補正式が分かったので、あとはパラメータを求めれば補正することが出来る。
補正に必要なパラメータは以下の5個。
$ Distotion\ coefficient=(k_1\ k_2\ p_1\ p_2\ k_3)
ここで、3次元座標(リアルの位置)とカメラの2次元座標を対応させることを考える。
以下の図(src)における、$ (X,Y,Z)と$ (u,v)との対応を考える。 https://scrapbox.io/files/647daabac34287001c8c2d42.png
このとき、2つの要素について考える必要がある
extrinsic parameters
撮影対象とカメラの位置関係
3次元空間における、どの位置から、どの角度で撮るのか
$ extrinsic\ parameters = T =\left[\begin{matrix} R_{11} &R_{12} & R_{13} & t_x \\R_{21} &R_{22} & R_{23} & t_y \\R_{31} &R_{32} & R_{33} & t_z \\ \end{matrix}\right]
Rは回転、tは並進ベクトル
intrinsic parameters
カメラ特有の性質
Naa_tsure.iconつまり同じカメラであれば、何をどう撮ろうと同じ
焦点距離$ (f_x,f_y)・光学中心$ (c_x,c_y)
$ intrinsic\ parameters = K=\left[\begin{matrix} f_x & 0 & c_x \\ \ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix}\right]
この2つの行列を用いて、
世界の3次元座標→extrinsic parameters→カメラ基準の3次元座標→intrinsic parameters→写真の2次元座標
という変換を行う
$ s \left( \begin{matrix} u\\v\\1\end{matrix}\right) = KT\left( \begin{matrix} X\\Y\\Z\\1\end{matrix}\right)
Z=0になるような座標系を考えると、
$ T =\left[\begin{matrix} R_{11} &R_{12} & t_x \\R_{21} &R_{22} & t_y \\R_{31} &R_{32} & t_z \\ \end{matrix}\right]
とかける。
以上をまとめると、必要なパラメータは、
Distortion parameter 5個
Intrinsic parameter 4個(焦点距離・光学中心)
extrinsic parameter 6個(回転・平行移動)?
となる
結局パラメタ推定って中で何が起こってるの?って話はここに詳しい
Naa_tsure.icon詳しいことは分からないけど、大量の(X,Y,Z)と(u,v)のペアを連れてきて最小二乗法でパラメタ推定っぽい
memo
基本行列と基礎行列の話
hl.icon
変数の意味が直感的にわかりやすい
計算式の意味がわかりやすい